import { createApp } from 'vue'
import App from './App.vue'
import './assets/main.css'
import router from './router'
import { DatabasePlugin, dbService } from './services/simpleDbService'
import { initializeDatabase } from './utils/simpleDbInit.js'
import imageLoader from './utils/imageLoader.js'
import { initMockData } from './utils/mockData.js'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

// 初始化模拟数据，提供测试账号
initMockData()

const app = createApp(App)

// 使用数据库插件
app.use(DatabasePlugin)
app.use(router)
app.use(ElementPlus)

// 注册图片错误处理指令
app.directive('img-error', imageLoader.getImageErrorDirective())

// 全局属性，方便在组件中使用
app.config.globalProperties.$imageLoader = imageLoader

// 初始化数据库
async function setupApp() {
  try {
    console.log('初始化数据库服务...');
    // 初始化本地存储数据库，但不运行测试，以避免潜在阻塞
    await initializeDatabase({
      runTests: false // 暂时禁用测试，确保应用能正常启动
    });
    console.log('数据库服务初始化完成');
  } catch (error) {
    console.error('数据库初始化失败:', error);
    console.log('继续挂载应用...');
  } finally {
    // 确保无论如何都挂载应用
    app.mount('#app');
    console.log('应用已挂载');
  }
}

// 执行应用设置
setupApp();

// 为开发环境提供全局访问
if (typeof window !== 'undefined' && import.meta.env.DEV) {
  window.dbService = dbService;
}

// 挂载点已移至setupApp函数中